ダイアログボックス


MsgBox関数
MsgBox 関数は、ダイアログ ボックスにメッセージを表示し、ボタンがクリックされるのを待って、どのボタンがクリックされたのかを示す値を返します。
1 MsgBox 関数の構文
MsgBox 関数の引数は、「prompt」以外のすべてを省略することができます。それぞれの引数の機能は、下表のとおりです。
MsgBox(prompt[, buttons] [, title] [, helpfile, context])
引 数 |
内 容 |
prompt |
ダイアログ
ボックス内にメッセージとして表示する文字列式を指定します。
文字列を複数行指定する場合は、「vbCrLf」を改行する位置に挿入します。 |
buttons |
表示するボタンの種類と個数、使用するアイコンのスタイル、標準ボタン、メッセージ ボックスがモーダルかどうかを表す値の合計値を示す数式を指定します。 |
title |
ダイアログ ボックスのタイトル
バーに表示する文字列を指定します。 |
helpfile |
使用するヘルプ ファイルの名前を示す文字列式を指定します。 |
context |
ヘルプ トピックに指定したコンテキスト番号を表す数式を指定します。 |
2 引数 buttons の指定方法
名前付き引数 buttons には、次の各グループから値を 1 つずつ選択して加算したうち、該当する値の合計値を指定します。
[ 例:vbYesNo ボタン(4)と vbQuestion ボタン(32) vbDefaultButton1 (0)の組み合わせ]
ボタンの値を合計すると、「 4 + 32 + 0 = 36
」になりますが、後日、見た場合にわかりやすくするには、下記のように各グループの定数を
+ (プラス)でつないで指定したほうがわかり易いでしょう。
Style = vbYesNo + vbQuestion + vbDefaultButton1
定 数 |
値 |
内 容 |
ボタンの種類と個数 |
vbOKOnly |
0 |
[OK] ボタンのみを表示します。 |
vbOKCancel |
1 |
[OK] ボタンと [キャンセル] ボタンを表示します。 |
vbAbortRetryIgnore |
2 |
[中止]、[再試行]、及び [無視]
ボタンを表示します。 |
vbYesNoCancel |
3 |
[はい]、[いいえ]、及び [キャンセル]
ボタンを表示します。 |
vbYesNo |
4 |
[はい] ボタンと [いいえ] ボタンを表示します。 |
vbRetryCancel |
5 |
[再試行] ボタンと [キャンセル] ボタンを表示します。 |
アイコンの種類 |
vbCritical |
16 |
警告メッセージ アイコンを表示します。 |
vbQuestion |
32 |
問い合わせメッセージ アイコンを表示します。 |
vbExclamation |
48 |
注意メッセージ アイコンを表示します。 |
vbInformation |
64 |
情報メッセージ アイコンを表示します。 |
標準ボタン |
vbDefaultButton1 |
0 |
第 1 ボタンを標準ボタンにします。 |
vbDefaultButton2 |
256 |
第 2 ボタンを標準ボタンにします。 |
vbDefaultButton3 |
512 |
第 3 ボタンを標準ボタンにします。 |
vbDefaultButton4 |
768 |
第 4 ボタンを標準ボタンにします。 |
モーダルかどうか |
vbApplicationModal |
0 |
アプリケーション モーダルに設定します。
メッセージ ボックスに応答するまで、現在選択中のアプリケーションの実行を継続できません。 |
vbSystemModal |
4096 |
システム モーダルに設定します。メッセージ ボックスに応答するまで、すべてのアプリケーションが中断されます。
|
3 MsgBox 関数の戻り値
MsgBox 関数の戻り値は、下表に示すように、ボタンの選択結果です。選択結果を取得するには、一般的には変数を使用します。
定 数 |
値 |
説 明 |
定 数 |
値 |
説 明 |
vbOK |
1 |
[OK] |
vbIgnore |
5 |
[無視] |
vbCancel |
2 |
[キャンセル] |
vbYes |
6 |
[はい] |
vbAbort |
3 |
[中止] |
vbNo |
7 |
[いいえ] |
vbRetry |
4 |
[再試行] |
|
|
|


処理内容:印刷実行メッセージを表示します
Sub msgbox_1()
MsgBox "印刷を実行します。プリンタをセットしてください。"
End Sub
処理内容:メッセージを改行(vbCrLf)します
Sub msgbox_2()
MsgBox "印刷を実行します。" & vbCrLf & "プリンタをセットしてください。"
End Sub
処理内容:計算結果を表示します
Sub msgbox_3()
MsgBox "10 MOD 3 = " & 10 Mod 3
End Sub
処理内容:アクティブセルのアドレスを表示します
Sub msgbox_4()
MsgBox ActiveCell.Address
End Sub
処理内容:変数の値を表示します
Sub msgbox_5()
A = 10
MsgBox "変数の値 = " & A
End Sub
処理内容:メッセージと情報アイコンを表示します
Sub msgbox_6()
MsgBox "情報アイコンを表示します", vbInformation
End Sub


処理内容:印刷実行確認メッセージを表示します
Sub msgbox_7()
Msg = "印刷を実行しますか"
Style =vbYesNo + vbExclamation + vbDefaultButton1
Title = "印刷実行確認"
msgRec=MsgBox(Msg,Style,Title)
If msgRec = vbNo Then Exit Sub
MsgBox "印刷を実行します"
End Sub
処理内容:MsgBoxの戻り値でファイル登録を確認します
Sub msgbox_8()
Msg = "入力結果を登録しますか"
Style = vbYesNoCancel + vbQuestion + vbDefaultButton1
Title = "登録確認"
MsgRec = MsgBox(Msg, Style, Title)
If msgRec = vbNo Then
MsgBox "ファイルを登録せず終了します"
Exit Sub
Else
MsgBox "ファイルを登録します"
End If
End Sub
処理内容:MsgBoxの戻り値の結果により処理分岐します
Sub msgbox_9()
Msg = "処理を実行しますか"
Style = vbYesNoCancel + vbQuestion + vbDefaultButton1
Title = "処理確認"
MsgRec = MsgBox(Msg, Style, Title)
Select Case MsgRec
Case vbYes: MsgBox "「はい」がクリックされたときの処理"
Case vbNo: MsgBox "「いいえ」がクリックされたときの処理"
Case vbCancel: MsgBox "「キャンセル」がクリックされたときの処理"
End Select
End Sub


InputBox 関数
InputBox 関数は、ダイアログ ボックスにメッセージとテキスト ボックスを表示し、文字列が入力されるか、またはボタンがクリックされると、テキスト ボックスの内容を文字列型 (String)の値で返します。構文は下記のとおりです。
[ InputBox 関数の構文 ]
InputBox(prompt[, title] [, default] [, xpos] [, ypos] [, helpfile, context])
InputBox 関数の引数は、「prompt」以外のすべてを省略することができます。それぞれの引数の機能は、下表のとおりです。
引数 |
内 容 |
prompt |
ダイアログ
ボックス内にメッセージとして表示する文字列を指定します。
文字列を複数行指定する場合は、「vbCrLf」を改行する位置に挿入します。 |
title |
ダイアログ ボックスのタイトル バーに表示する文字列式を指定します。 |
default |
テキスト ボックスに既定値として表示する文字列式を指定します。 |
xpos |
画面の左端からダイアログ
ボックスの左端までの垂直方向の距離を、twip 単位で示す数式を指定します。省略すると、水平方向に対して画面の中央の位置に配置されます。 |
ypos |
画面の上端からダイアログ ボックスの上端までの垂直方向の距離を、twip 単位で示す数式を指定します。省略すると、垂直方向に対して画面の上端から約 1/3 の位置に配置されます。 |
helpfile |
使用するヘルプ ファイルの名前を示す文字列式を指定します。 |
context |
ヘルプ トピックに指定したコンテキスト番号を表す数式を指定します。 |


処理内容:年月日を入力します
Sub Inputbox_1()
DateIn = InputBox("年月日を入力してください。", _
"年月日入力", 0, xpos:=3000, ypos:=5000)
MsgBox DateIn & " が入力されました"
End Sub
処理内容:データが入力されるまで次の処理を行わない
Sub Inputbox_2()
Do
Num = InputBox("数字を入力", "データ入力")
If Len(Num) > 0 Then Exit Do
MsgBox "データを入力してください。", vbCritical
Loop
MsgBox Num & " が入力されました"
End Sub


InputBox メソッド
InputBox メソッドは、ユーザー入力用のダイアログ
ボックスを表示し、入力された情報を返します。[OK] ボタンをクリックすると、ダイアログ ボックスに入力した値が返されます。[キャンセル] ボタンをクリックすると、False が返されます。構文は下記のとおりです。
[ InputBox メソッドの構文 ]
Application.InputBox(Prompt, Title, Default, Left, Top, HelpFile, HelpContextId, Type)
InputBox メソッドの引数は、「prompt」以外のすべてを省略することができます。それぞれの引数の機能は、下表のとおりです。
引数 |
内 容 |
prompt |
文字列型 (String) の値を使用します。ダイアログ ボックスに表示するメッセージを指定します。この引数には、文字列、数値、日付、またはブール値を指定できます。(Excel では表示される前に、自動的に値を文字列型 (String) に強制します。)
文字列を複数行指定する場合は、「vbCrLf」を改行する位置に挿入します。 |
title |
ダイアログ ボックスのタイトル バーに表示する文字列式を指定します。 |
default |
テキスト ボックスに既定値として表示する文字列式を指定します。 |
Left |
画面の左上隅を基準として、左からの位置をポイント単位で指定します。 |
Top |
画面の左上隅を基準として、上からの位置をポイント単位で指定します。 |
helpfile |
使用するヘルプ ファイルの名前を示す文字列式を指定します。 |
context |
ヘルプ トピックに指定したコンテキスト番号を表す数式を指定します。 |
Type |
返されるデータの型を指定します。省略すると、文字列 (テキスト) を返します。
次に示す 1 つまたは複数の値の合計値を引数に指定できます。
たとえば、文字列または数値が入力できるダイアログ ボックスを作成するときは、引数 Type の値を 1 + 2 に設定します。 |
値 |
意味 |
0 |
数式 |
1 |
数値 |
2 |
文字列 (テキスト) |
4 |
論理値 (True または False) |
8 |
セル参照 (Range オブジェクト)
返された Range オブジェクトを別の Range オブジェクトに代入するには、次のように Set ステートメントを使う必要があります。
Set myRange = Application.InputBox(prompt := "Sample", type := 8) |
16 |
#N/A などのエラー値 |
64 |
数値配列 |


処理内容:数値データを入力します
Sub Inputmethod_1()
DateIn = Application.InputBox("数値を入力してください。", "数値入力", 0, _
Left:=200, Top:=100, Type:=1)
MsgBox DateIn & " が入力されました"
End Sub
処理内容:キャンセルボタンが押されたら処理中止、未入力でOKボタンが押されたら再実行
Sub Inputmethod_2()
Dim KeyWord as Variant
Do
KeyWord = Application.InputBox(Prompt:="キーワードを入力", Type:=2)
If KeyWord = False Then Exit Sub ' キャンセル→処理中止
If Len(KeyWord) > 0 Then Exit Do ' 未入力→メッセージ表示・再入力
MsgBox "キーワードが入力されていません", vbCritical
Loop
MsgBox KeyWord & " が入力されました"
End Sub
処理内容:日付だけを入力できるようにします
Sub Inputmethod_3()
Dim A As Date
On Error GoTo ErrorTrap
Do
A = Application.InputBox("日付を入力してください。", Type:=2)
If A = False Then
MsgBox " Cancel ボタンが押されました"
Exit Sub
End If
Loop Until IsDate(A) = True
MsgBox A & " が入力されました"
Exit Sub
ErrorTrap:
MsgBox "日付が入力されませんでした。再度入力してください。"
Resume
End Sub
処理内容:参照セルの番地を取得します
Sub Inputmethod_4()
Dim MyRange As Range
Dim strAddr As String
On Error Resume Next
Set MyRange = Application.InputBox("セル範囲指定", Type:=8)
If Err.Number <> 0 Then Exit Sub
On Error GoTo 0
strAddr = MyRange.Address
MsgBox strAddr
Set MyRange = Nothing
End Sub


ダイアログ ボックス
Excel の組み込みダイアログ ボックスを表示します。通常、Dialog
オブジェクトを使用するときは、 Dialogs(index) プロパティと Show
メソッドと組み合わせて指定します。
Dialogs(index) プロパティの引数 index には、そのダイアログボックスを特定する組み込み定数を指定します。使用できる定数の詳細は、ヘルプの「組み込みダイアログ ボックス引数一覧」
を参照してください。ダイアログ
ボックスを表示する構文は下記のとおりです。
Application.Dialogs(<組み込み定数>).Show
例:ソートダイアログボックスを表示します。
Application.Dialogs(xlDialogSort).Show
下表は、比較的使用頻度が高いと考えられるダイアログボックスをピックアップしたものです。
Dialogsプロパティの引数 |
内 容 |
xlDialogPageSetup |
印刷・ページセットアップ |
xlDialogSort |
ソート |
xlDialogOpen |
ファイルを開く |
xlDialogSaveAs |
名前をつけて保存 |
xlDialogFormatNumber |
文字表示書式 |
xlDialogAlignment |
文字配置書式 |
xlDialogActiveCellFormat |
文字フォント書式 |
xlDialogBorder |
罫線設定 |

